﻿using System.Threading.Tasks;
using Abp.Application.Services.Dto;
using pandx.Mulan.Dto;
using pandx.Mulan.Flow.FlowInstances.Dto;

namespace pandx.Mulan.Flow.FlowInstances
{
    public interface IFlowInstanceAppService
    {
        Task<PagedResultDto<FlowInstanceListDto>> ObtainFlowInstances(ObtainFlowInstancesInput input);
        Task<FileDto> ObtainFlowInstancesToExcel(ObtainFlowInstancesInput input);
        Task CreateOrUpdateFlowInstance(CreateOrUpdateFlowInstanceInput input);
        Task<GetFlowInstanceForEditOutput> GetFlowInstanceForEdit(EntityDto<long> input);
        Task<GetFlowInstanceForVerifyOutput> GetFlowInstanceForVerify(EntityDto<long> input);
        Task DeleteFlowInstance(EntityDto<long> input);
        Task<ListResultDto<FlowOperationHistoryListDto>> GetFlowOperationHistories(EntityDto<long> input);
        Task WorkingFlowInstance(CreateOrUpdateFlowInstanceInput input);
        Task RestartFlowInstance(CreateOrUpdateFlowInstanceInput input);
        Task RecallFlowInstance(EntityDto<long> input);
        Task VerifyNode(VerifyNodeInput input);
    }
}
